/*******************************************************************************
 * Copyright (c) 2011 LegSem.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl-3.0.txt
 * 
 * Contributors:
 *     LegSem - initial API and implementation
 ******************************************************************************/
package com.legsem.legstar.cci;

import java.util.Map;

import com.legstar.coxb.transform.IHostToJavaTransformer;
import com.legstar.coxb.transform.IJavaToHostTransformer;

/**
 * This interaction takes multiple input structures and produces multiple output
 * structures.
 */
public interface LegStarMultiIOInteractionSpec extends LegStarInteractionSpec {

    /**
     * Get the Transformers for input java objects.
     * 
     * @return a map of named transformers each capable of producing host data
     *         out of a java object
     */
    public Map < String, IJavaToHostTransformer > getInputTransformers();

    /**
     * Set the Transformers for input java objects.
     * 
     * @param transformers a map of named transformers each capable of producing
     *            host data out of a java object
     */
    public void setInputTransformers(
            Map < String, IJavaToHostTransformer > transformers);

    /**
     * Get the Transformers for output host data chunks.
     * 
     * @return a map of named transformers each capable of producing java
     *         objects out of a host data chunk.
     */
    public Map < String, IHostToJavaTransformer > getOutputTransformers();

    /**
     * Set the Transformers for output host data chunks.
     * 
     * @param transformers a map of named transformers each capable of producing
     *            java objects out of host data chunk
     */
    public void setOutputTransformers(
            Map < String, IHostToJavaTransformer > transformers);

}
